Jackson লাইব্রেরি ব্যবহার করে Custom Serializer তৈরি করা খুবই কার্যকর, যখন আপনার একটি Object-কে JSON-এ Serialize করার সময় কিছু কাস্টম লজিক যোগ করার প্রয়োজন হয়। নীচে Custom Serializer তৈরি এবং ব্যবহারের একটি উদাহরণ দেওয়া হলো:
১. Custom Serializer তৈরি করার ধাপসমূহ:
JsonSerializerক্লাস Extend করুন: একটি Custom Serializer ক্লাস তৈরি করতে হবে যাJsonSerializer<T>ইন্টারফেসকে ইমপ্লিমেন্ট করে।serializeমেথড Override করুন: এখানে আপনি Object-কে JSON-এ কিভাবে Serialize করবেন তা নির্ধারণ করবেন।@JsonSerializeএনোটেশন ব্যবহার করুন: কাস্টম Serializer-কে Object ফিল্ড বা ক্লাসে প্রয়োগ করতে এই এনোটেশন ব্যবহার করতে হয়।
উদাহরণ: Custom Serializer
১. একটি ক্লাস তৈরি করুন
public class User {
private int id;
private String name;
private String email;
// Constructor
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
২. Custom Serializer তৈরি করুন
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class UserCustomSerializer extends JsonSerializer<User> {
@Override
public void serialize(User user, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeNumberField("userId", user.getId()); // Custom field name
gen.writeStringField("fullName", user.getName().toUpperCase()); // Convert name to uppercase
gen.writeStringField("contactEmail", user.getEmail()); // Custom field name
gen.writeEndObject();
}
}
৩. @JsonSerialize এনোটেশন ব্যবহার করে Serializer প্রয়োগ করুন
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using = UserCustomSerializer.class)
public class User {
// Same as above
}
৪. মেইন প্রোগ্রামে ব্যবহার
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// Object তৈরি
User user = new User(1, "Rahim", "rahim@example.com");
// ObjectMapper ব্যবহার
ObjectMapper objectMapper = new ObjectMapper();
// Object থেকে JSON
String jsonString = objectMapper.writeValueAsString(user);
// JSON প্রিন্ট করুন
System.out.println("Custom Serialized JSON: " + jsonString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
৫. আউটপুট
Custom Serialized JSON: {
"userId": 1,
"fullName": "RAHIM",
"contactEmail": "rahim@example.com"
}
২. গুরুত্বপূর্ণ বিষয়:
- Custom Logic: কাস্টম Serializer-এ আপনি ফিল্ডের নাম পরিবর্তন, ডাটা ফরম্যাটিং, বা কিছু ডাটা বাদ দিতে পারবেন।
Global Serializer: যদি একই Serializer একাধিক ক্লাস বা Object-এ ব্যবহার করতে চান, তবে আপনি
SimpleModuleব্যবহার করে ObjectMapper-এ রেজিস্টার করতে পারেন।SimpleModule module = new SimpleModule(); module.addSerializer(User.class, new UserCustomSerializer()); objectMapper.registerModule(module);- Complex Objects বা Collections: একই কৌশল ব্যবহার করে Complex Objects বা Collections-এর জন্যও Custom Serializer তৈরি করতে পারেন।
এভাবে Jackson ব্যবহার করে Custom Serializer তৈরি এবং প্রয়োগ করা যায়।
Content added By
Read more